﻿
Public Interface container(Of T)
    Inherits ICloneable

    Interface iterator
        Function instance() As T
    End Interface

    Property at(ByVal index As Int64) As T
    Sub clear()
    Function empty() As Boolean
    Function size() As Int64
    Function insert(ByVal that As T) As iterator
    Function begin() As iterator
    Function [end]() As iterator
    Function rbegin() As iterator
    Function rend() As iterator
End Interface

Public Interface backoperating_container(Of T)
    Inherits container(Of T)

    Function push_back(ByVal v As T) As Boolean
    Function pop_back() As Boolean
    Property back() As T
End Interface

Public Interface frontoperating_container(Of T)
    Inherits container(Of T)

    Function push_front(ByVal v As T) As Boolean
    Function pop_front() As Boolean
    Property front() As T
End Interface

Public Interface linear_container(Of T)
    Inherits backoperating_container(Of T), frontoperating_container(Of T)
End Interface
